Title Banner


Technotes


Inside Macintosh--Processes Errata



Technote IM_ERRATA 06October 1994



Written by: Tim Monroe October 1994

This Technical Note discusses known errors and omissions in Inside Macintosh: Processes.


Topics


Chapter 1 - Introduction to Processes and Tasks

Correction to Figure 1-1
Page 1-4, The Cooperative Multitasking Environment

Figure 1-1 shows the wrong application icon in the menu bar. The SurfWriter icon should be in the menu bar labeling the application menu, not the Finder icon.

Chapter 4 - Vertical Retrace Manager

Clarification of Installing Persistent VBL Tasks
Page 4-20, Installing a Persistent VBL Task

The description of installing a persistent VBL task is partly incorrect. The documentation states that "if you want to install a persistent system-based VBL task, you need to load its VBL task record into the system partition." This is incorrect, and it is not what is demonstrated in Listing 4-15. Listing 4-15 shows how to put the VBL task code (or enough of it to fool the Vertical Retrace Manager) into the system partition.

However, Listing 4-15 needs a call to FlushInstructionCache added immediately before the call to VInstall. In addition, it is preferable to code the error-handling part of Listing 4-15 like this:

SysHeapPtr := NewPtrSys(kJMPSize);
IF SysHeapPtr = NIL THEN
	BEGIN
		InstallPersistentVBL := MemError;
		Exit(InstallPersistentVBL );
	END;

Clarification of GetVBLQHdr
Page 4-28

GetVBLQHdr returns a pointer to the head of the VBL queue. One of the bits of the qFlags field of the VBL queue header indicates whether a VBL task is currently executing. The correct bit is bit 6 of the first byte of the qFlags field, or bit 14 of the entire two-byte field. Versions of A/UX prior to 3.1 incorrectly used bit 6 of the entire two-byte field.

Chapter 6 - Deferred Task Manager

Clarification of Interrupt Priorities During VBL Tasks
Pages 6-3, 6-5, About the Deferred Task Manager

The documentation states "If the current applicaiton is then interrupted by a vertical retrace interrupt, the interrupt priority is set to 1 during the servicing of the interrupt and restored to 0 upon completion." This is not strictly correct. The Vertical Retrace Manager actually restores the interrupt mask to 0 before running VBL tasks. As a result, VBL tasks can be interrupted by future level-1 interrupts, although a VBL task cannot interrupt another VBL task.

On page 6-5, the documentation states "Suppose that your application installs and activates a Time Manager task, which is triggered by level-2 interrupts." Actually, Time Manager interrupts are level-1 interrupts.

Also on page 6-5, there is occasional mention of the status register being restored to 0. In fact, only three bits of the status register (the processor priority level) are restored to 0. All other bits are unchanged.

Chapter 8 - Shutdown Manager

Correction to Listing 8-1
Page 8-8, Sending a Shutdown or Restart Event

Listing 8-1 on page 8-8 contains several errors. The constant kFinderSig should be defined to be 'MACS'. In addition, that constant cannot be passed directly to the AECreateDesc function. Instead, you must declare a variable of type OSType and assign kFinderSig to it, as follows:

CONST
	kFinderSig = 'MACS';
VAR
	...
	signature: OSType
BEGIN
	signature := kFinderSig;
	myErr := AECreateDesc(typeApplSignature, @signature, ...);
	...


Glossary

Correction to Glossary Entry
Page GL-2

The entry interrupt handle should be interrupt handler.


Further Reference:



Tech Support
Technotes
Previous Technote | Contents


Navigation graphic, see text links

Main | Page One | What's New | Apple Computer, Inc. | Find It | Contact Us | Help